package com.naiterui.ehp.bp.domain;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * 医生收费设置实体
 * @author Amber
 * @since 1.0.0
 */
@Entity
@Table(name = "dr_charge")
public class DoctorCharge implements Serializable {

    public static final Integer CHARGE_TYPE_INQUIRING = 1;
    public static final Integer CHARGE_TYPE_VIDEO = 2;
    /**
     * 字段或域定义：<code>serialVersionUID</code>
     */
    private static final long serialVersionUID = -8940577630965920206L;
    /**
     * 主键：<code>id</code>
     */
    private Long id;
    /**
     * 医生id：<code>doctorId</code>
     */
    private Long doctorId;
    /**
     * 收费类型：<code>chargeType</code>
     */
    private Integer chargeType;
    /**
     * 收费金额：<code>charge</code>
     */
    private Integer charge;
    /**
     * 收费周期：<code>chargePeriod</code>
     */
    private Long chargePeriod;
    /**
     * 创建时间：<code>createdAt</code>
     */
    private Date createdAt;
    /**
     * 创建人：<code>createdBy</code>
     */
    private String createdBy;
    /**
     * 修改时间：<code>changedAt</code>
     */
    private Date changedAt;
    /**
     * 修改人：<code>changedBy</code>
     */
    private String changedBy;

    public DoctorCharge() {
    }

    /**
     * 构造函数
     * @param doctorId 医生id
     * @param type 收费类型，0：图文；1：电话
     * @param charge 收费金额
     * @param period TODO
     */
    public DoctorCharge(long doctorId, int type, int charge, long period) {
        this.doctorId = doctorId;
        this.chargeType = type;
        this.charge = charge;
        this.chargePeriod = period;
        this.createdAt = new Date();
        this.createdBy = "system";
        this.changedAt = new Date();
        this.changedBy = "system";
    }

    /**
     * @return Long 取得域 id 的方法。
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Long getId() {
        return this.id;
    }

    /**
     * @param id 对域 id 的设置方法.
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * @return Long 取得域 doctorId 的方法。
     */
    @Column(name = "dr_id", nullable = false)
    public Long getDoctorId() {
        return this.doctorId;
    }

    /**
     * @param doctorId 对域 doctorId 的设置方法.
     */
    public void setDoctorId(Long doctorId) {
        this.doctorId = doctorId;
    }

    /**
     * @return Integer 取得域 chargeType 的方法。
     */
    @Column(name = "charge_type", nullable = false)
    public Integer getChargeType() {
        return this.chargeType;
    }

    /**
     * @param chargeType 对域 chargeType 的设置方法.
     */
    public void setChargeType(Integer chargeType) {
        this.chargeType = chargeType;
    }

    /**
     * @return Integer 取得域 charge 的方法。
     */
    @Column(name = "charge", nullable = false)
    public Integer getCharge() {
        return this.charge;
    }

    /**
     * @param charge 对域 charge 的设置方法.
     */
    public void setCharge(Integer charge) {
        this.charge = charge;
    }

    /**
     * @return Long 取得域 chargePeriod 的方法。
     */
    @Column(name = "charge_period", nullable = false)
    public Long getChargePeriod() {
        return this.chargePeriod;
    }

    /**
     * @param chargePeriod 对域 chargePeriod 的设置方法.
     */
    public void setChargePeriod(Long chargePeriod) {
        this.chargePeriod = chargePeriod;
    }

    /**
     * @return Date 取得域 createAt 的方法。
     */
    @Column(name = "created_at", nullable = false)
    public Date getCreatedAt() {
        return this.createdAt;
    }

    /**
     * @param createdAt 对域 createAt 的设置方法.
     */
    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    /**
     * @return String 取得域 createby 的方法。
     */
    @Column(name = "created_by")
    public String getCreatedBy() {
        return this.createdBy;
    }

    /**
     * @param createdBy 对域 createby 的设置方法.
     */
    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    /**
     * @return Date 取得域 changedAt 的方法。
     */
    @Column(name = "changed_at")
    public Date getChangedAt() {
        return this.changedAt;
    }

    /**
     * @param changedAt 对域 changedAt 的设置方法.
     */
    public void setChangedAt(Date changedAt) {
        this.changedAt = changedAt;
    }

    /**
     * @return String 取得域 changedBy 的方法。
     */
    @Column(name = "changed_by")
    public String getChangedBy() {
        return this.changedBy;
    }

    /**
     * @param changedBy 对域 changedBy 的设置方法.
     */
    public void setChangedBy(String changedBy) {
        this.changedBy = changedBy;
    }

}
